﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using IUAP;
using System.Web.Security;

public partial class PagAdmin_EditarUsuario : BasePage
{
    string codUsuario = "";

    protected void Page_Load(object sender, EventArgs e)
    {
        codUsuario = this.Request.QueryString["CodUsuario"];

        lblRolesFeedbackOK.Visible = false;
        lblProfileFeedbackOK.Visible = false;

        if (!this.IsPostBack)
        {
            UserProfile1.CodUsuario = codUsuario;

            // mostrar los datos del usuario
            MembershipUser user = Membership.GetUser(codUsuario);
            ProfileCommon perfil = Profile.GetProfile(codUsuario);  
            if (user == null)
                Response.Redirect("~/PagComunes/Error.aspx?code=erroruser");
            lblUserName.Text = user.UserName;
            lnkEmail.Text = user.Email;
            lnkEmail.NavigateUrl = "mailto:" + user.Email;
            lblRegistered.Text = user.CreationDate.ToString("f");
            lblLastLogin.Text = user.LastLoginDate.ToString("f");
            lblLastActivity.Text = user.LastActivityDate.ToString("f");
            lblEscuela.Text = perfil.academico.nombescuela;
            chkOnlineNow.Checked = user.IsOnline;
            chkApproved.Checked = user.IsApproved;
            chkLockedOut.Checked = user.IsLockedOut;
            chkLockedOut.Enabled = user.IsLockedOut;

            BindRoles();
        }
    }

    private void BindRoles()
    {
        chklRoles.DataSource = Roles.GetAllRoles();
        chklRoles.DataBind();
        foreach (string role in Roles.GetRolesForUser(codUsuario))
            chklRoles.Items.FindByText(role).Selected = true;
    }

    protected void btnUpdateProfile_Click(object sender, EventArgs e)
    {
        UserProfile1.SaveProfile();
        lblProfileFeedbackOK.Visible = true;
    }

    protected void btnCreateRole_Click(object sender, EventArgs e)
    {
        if (!Roles.RoleExists(txtNewRole.Text.Trim()))
        {
            Roles.CreateRole(txtNewRole.Text.Trim());
            BindRoles();
        }
    }

    protected void btnUpdateRoles_Click(object sender, EventArgs e)
    {
        // primero quitar el usuario de todas las funciones ...
        string[] currRoles = Roles.GetRolesForUser(codUsuario);
        if (currRoles.Length > 0)
            Roles.RemoveUserFromRoles(codUsuario, currRoles);
        // y luego agregar el usuario a las funciones seleccionadas
        List<string> newRoles = new List<string>();
        foreach (ListItem item in chklRoles.Items)
        {
            if (item.Selected)
                newRoles.Add(item.Text);
        }
        Roles.AddUserToRoles(codUsuario, newRoles.ToArray());

        lblRolesFeedbackOK.Visible = true;
    }

    protected void chkApproved_CheckedChanged(object sender, EventArgs e)
    {
        MembershipUser user = Membership.GetUser(codUsuario);
        user.IsApproved = chkApproved.Checked;
        Membership.UpdateUser(user);
    }

    protected void chkLockedOut_CheckedChanged(object sender, EventArgs e)
    {
        if (!chkLockedOut.Checked)
        {
            MembershipUser user = Membership.GetUser(codUsuario);
            user.UnlockUser();
            chkLockedOut.Enabled = false;
        }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        Response.Redirect("AdministrarUsuarios.aspx");
    }
}